<?php

class UsuariosController extends AppController {

    var $name = 'Usuarios';
    var $uses = array('Usuario', 'Estado', 'Municipio', 'Parroquia', 'Tienda', 'Sistema', 'Usuario_sistema', 'Sistema_modulo_sistema', 'Sistema_modulo_accion', 'Modulo_accion_opcion', 'Opcion_sistema');
    var $helpers = array('Html', 'Ajax', 'Javascript', 'Cargar');
    var $layout = "ajax";
    var $components = array('Json', 'Util', 'For', 'Interfaz', 'Vista'/* ,'RequestHandler','DebugKit.Toolbar' */);

    public function beforeFilter() {
        $this->validar();
    }

    function index() {
        
    }

    public function listado_usuarios($busq = null) {
        $this->permisos_menu_individual('LISTADO DE usuarios');
        $this->Vista->title('Listado de Usuarios');
        $tipo_usuario = $this->Interfaz->id($this->Session->read('tipo_usuario'));
        $tienda_id = $this->Interfaz->id($this->Session->read('tienda_id'));
        $data = $this->Usuario->find('all', array('conditions' => array("Usuario.id >" => '0'), 'order' => 'Funcionario.nombre, Funcionario.apellido'));
        $this->set('data', $data);
        $this->set('busq', $busq);
        $this->log();
    }

    public function nuevo($div = 'vista', $divlistado = 'vista') {
        $this->permisos_accion_individual('LISTADO DE usuarios', 'nuevo'); // mensaje que se quiere mostrar
        $this->set('div', $div);
        $this->set('divlistado', $divlistado);
        $this->set('lista_sexo', $this->Utilitario->lista_sexo('L'));
        $this->set('lista_cod_celular', $this->Utilitario->lista_cod_celular());
        $this->set('lista_tienda', $this->Utilitario->lista_tienda());
        $this->set('tipo_usuario', $this->Interfaz->id($this->Session->read('tipo_usuario')));
    }

    public function buscador_funcionarios() {
        $this->set('div', 'cedula');
        $this->set('divlistado', DOCULTO);
    }

    public function listado_buscador_funcionarios($vent = null, $div = null, $para = null) {
        if (isset($para) && !empty($para)) {
            $this->set('data', $this->Funcionario->find('all', array('conditions' => array("Funcionario.id >" => '0', "OR" => array('Funcionario.nombre ilike' => "%$para%", 'Funcionario.apellido ilike' => "%$para%", 'Funcionario.cedula ilike' => "%$para%", 'Funcionario.ficha ilike' => "%$para%")), 'order' => 'Funcionario.nombre, Funcionario.apellido')));
            $this->set('busq', $para);
        } else {
            $this->set('data', null);
            $this->set('busq', '');
        }
        echo "<script type='text/javascript'>document.getElementById('$div').style.display='block';</script>";
        $this->set('vent', $vent);
    }

    public function seleccionar_funcionario($vent = null, $id_funcio = null) {
        if (isset($vent) && isset($id_funcio)) {
            $id = $this->Interfaz->id($id_funcio);
            $d = $this->Funcionario->find('first', array('conditions' => array("Funcionario.id" => $id)));
            echo "<script type='text/javascript'>
					document.getElementById('funcionario_id').value='" . $d['Funcionario']['id'] . "';
					document.getElementById('cedula').value='" . $d['Funcionario']['cedula'] . "';
					document.getElementById('nombre').value='" . $d['Funcionario']['nombre'] . "';
					document.getElementById('apellido').value='" . $d['Funcionario']['apellido'] . "';
					document.getElementById('sexo').value='" . $d['Funcionario']['sexo'] . "';
					document.getElementById('ficha').value='" . $d['Funcionario']['ficha'] . "';
					document.getElementById('correo').value='" . $d['Funcionario']['correo'] . "';
					document.getElementById('celular').value='" . $d['Funcionario']['celular'] . "';
					document.getElementById('telefono').value='" . $d['Funcionario']['telefonoresidencial'] . "';
					document.getElementById('fecha_i_cal_').value='" . $this->Utilitario->ver_fecha($d['Funcionario']['fecha_nacimiento']) . "';
				</script>";
            $this->Vista->cerrar_ventana($vent);
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }

    function guardarnuevo() {
        extract($this->request->data);
        $ff = $this->request->data['fecha'];
        $ff = $$ff;
        $data = $this->Interfaz->data($this->request->data);
        $rep = 0;
        if ($this->Vista->empyt($data, array('telefono', 'correo', 'clave', 'repclave', 'busca_funcionario_em'))) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->correo($data['correo'], 'correo')) {
            $this->Vista->mensaje('Correo Electronico Invalido', 'ERROR');
        } else if ($this->Vista->celular($data['celular'], 'celular')) {
            $this->Vista->mensaje('Numero Celular Invalido', 'ERROR');
        } else if ($this->Vista->telefono($data['telefono'], 'telefono')) {
            $this->Vista->mensaje('Numero de Telefono Residencial Invalido', 'ERROR');
        } else if ($this->Vista->checkdate($data['fecha_i_cal_'], 'fecha_i_cal_')) {
            $this->Vista->mensaje('LA FECHA DE NACIMIENTO PROPORCIONADA NO ES VALIDA', 'ERROR', 'fecha');
        } else if ($this->Vista->verifica('Funcionario', 'cedula', $data['cedula'], 'cedula') && $data['funcionario_id'] == 0) {
            $this->Vista->mensaje('Esta Cedula ya se encuentra registrada', 'ERROR', 'cedula');
        } else if ($this->Vista->verifica('Usuario', 'funcionario_id', $data['funcionario_id'], 'cedula')) {
            $this->Vista->mensaje('El Funcionario ya Posee Usuario Registrado', 'ERROR', 'cedula');
        } else if ($this->Vista->verifica('Usuario', 'usuario', $data['usuario'], 'usuario')) {
            $this->Vista->mensaje('Esta Usuario ya se encuentra registrado', 'ERROR', 'usuario');
        } else if ($this->Vista->verifica('Funcionario', 'celular', $data['celular'], 'celular') && $data['funcionario_id'] == 0) {
            $this->Vista->mensaje('Esta Celular ya se encuentra registrado', 'ERROR', 'celular');
        } else if ((isset($data['clave']) or isset($data['repclave'])) and $data['clave'] != $data['repclave']) {
            $this->Vista->mensaje('Esta Clave es Erronea por favor verifique', 'ERROR');
            $this->Vista->monta_imagem('clave', 'Error en clave');
            $this->Vista->monta_imagem('repclave', 'Error en clave');
            $rep = 1;
        } else {
            if ($rep == 0) {
                $cla = explode('-', $data['cedula']);
                $clave = $cla[1];
            } else {
                $clave = $data['clave'];
            }
            $this->Usuario->query('BEGIN  WORK');
            if (isset($data['funcionario_id']) && $data['funcionario_id'] > 0) {
                $id_fun = $data['funcionario_id'];
            } else {

                $d['Funcionario']['nombre'] = $data['nombre'];
                $d['Funcionario']['apellido'] = $data['apellido'];
                $d['Funcionario']['cedula'] = $data['cedula'];
                $d['Funcionario']['fecha_nacimiento'] = $this->Utilitario->guar_fecha($ff);
                $d['Funcionario']['sexo'] = $data['sexo'];
                $d['Funcionario']['correo'] = $data['correo'];
                $d['Funcionario']['celular'] = $data['celular'];
                $d['Funcionario']['telefonoresidencial'] = $data['telefono'];
                $d['Funcionario']['ficha'] = $data['ficha'];
                $d['Funcionario']['tienda_id'] = $data['tienda_id'];
                $d['Funcionario']['estatus'] = 1;
                if ($this->Funcionario->save($d)) {
                    $id_fun = $this->Funcionario->id;
                } else {
                    $id_fun = 0;
                }
            }
            if ($id_fun > 0) {
                $d = null;
                $d['Usuario']['conectado'] = '0';
                $d['Usuario']['funcionario_id'] = $id_fun;
                $d['Usuario']['contrasena'] = $this->Utilitario->con_clave($clave);
                $d['Usuario']['estatus'] = 1;
                $d['Usuario']['tienda_id'] = $data['tienda_id'];
                $d['Usuario']['tipo_usuario_id'] = 5;
                $d['Usuario']['usuario'] = $data['usuario'];

                if ($this->Usuario->save($d)) {
                    $this->Vista->mensaje('Usuario Registrado Exitosamente', 'EXITO');
                    $this->Usuario->query('COMMIT');
                    $this->log();
                } else {
                    $this->Vista->mensaje('Ocurrio un Error Verificar Logs', 'ERROR');
                    $this->Usuario->query('ROLLBACK');
                }
            } else {
                $this->Vista->mensaje('Ocurrio un Error Verificar Logs', 'ERROR');
                $this->Usuario->query('ROLLBACK');
            }
        }
        $this->listado_usuarios($data['usuario']);
        $this->render('listado_usuarios');
    }

    public function micuenta($div = 'vista', $divlistado = 'vista', $tip = 2, $id = null) {
        $id_limpio = $this->Interfaz->id($id);
        $this->set('data', $this->Usuario->find('first', array('conditions' => array("Usuario.id" => $id_limpio, "Usuario.estatus" => 1))));
        $this->set('div', $div);
        $this->set('tip', $tip);
        $this->set('divlistado', $divlistado);
        $this->set('lista_sexo', $this->Utilitario->lista_sexo('L'));
        $this->set('lista_cod_celular', $this->Utilitario->lista_cod_celular());
    }

    public function guardarmodificar() {
        //$this->Json->pr($data);
        extract($this->request->data);
        $ff = $this->request->data['fecha'];
        $ff = $$ff;
        $id_fun = $this->Interfaz->id($this->request->data['funcionario_id']);
        $data = $this->Interfaz->data($this->request->data);
        $id = $this->Interfaz->id($data['id']);

        $rep = 0;
        if ($this->Vista->empyt($data, array('telefono', 'correo', 'clave', 'repclave'))) {
            $this->Vista->mensaje('Faltan Datos que son Requeridos', 'ALERTA');
        } else if ($this->Vista->correo($data['correo'], 'correo')) {
            $this->Vista->mensaje('Correo Electronico Invalido', 'ERROR');
        } else if ($this->Vista->celular($data['celular'], 'celular')) {
            $this->Vista->mensaje('Numero Celular Invalido', 'ERROR');
        } else if ($this->Vista->telefono($data['telefono'], 'telefono')) {
            $this->Vista->mensaje('Numero de Telefono Residencial Invalido', 'ERROR');
        } else if ($this->Vista->checkdate($ff, 'fecha_i_cal_')) {
            $this->Vista->mensaje('LA FECHA DE NACIMIENTO PROPORCIONADA NO ES VALIDA', 'ERROR', 'fecha');
        } else if ($this->Vista->verifica('Funcionario', 'cedula', $data['cedula'], 'cedula', $id_fun)) {
            $this->Vista->mensaje('Esta Cedula ya se encuentra registrada', 'ERROR', 'cedula');
        } else if ($this->Vista->verifica('Usuario', 'funcionario_id', $id_fun, 'cedula', $id)) {
            $this->Vista->mensaje('El Funcionario ya Posee Usuario Registrado', 'ERROR', 'cedula');
        } else if ($this->Vista->verifica('Usuario', 'usuario', $data['usuario'], 'usuario', $id)) {
            $this->Vista->mensaje('Esta Usuario ya se encuentra registrado', 'ERROR', 'usuario');
        } else if ($this->Vista->verifica('Funcionario', 'celular', $data['celular'], 'celular', $id_fun)) {
            $this->Vista->mensaje('Esta Celular ya se encuentra registrado', 'ERROR', 'celular');
        } else if ((isset($data['clave']) or isset($data['repclave'])) and $data['clave'] != $data['repclave']) {
            $this->Vista->mensaje('Esta Clave es Erronea por favor verifique', 'ERROR');
            $this->Vista->monta_imagem('clave', 'Error en clave');
            $this->Vista->monta_imagem('repclave', 'Error en clave');
            $rep = 1;
        } else {
            $d['Funcionario']['id'] = $id_fun;
            $d['Funcionario']['nombre'] = $data['nombre'];
            $d['Funcionario']['apellido'] = $data['apellido'];
            $d['Funcionario']['cedula'] = $data['cedula'];
            $d['Funcionario']['fecha_nacimiento'] = $this->Utilitario->guar_fecha($ff);
            $d['Funcionario']['sexo'] = $data['sexo'];
            $d['Funcionario']['correo'] = $data['correo'];
            $d['Funcionario']['celular'] = $data['celular'];
            $d['Funcionario']['telefonoresidencial'] = $data['telefono'];
            $d['Funcionario']['ficha'] = $data['ficha'];
            if (isset($data['tienda_id']) && !empty($data['tienda_id']))
                $tienda_id = $data['tienda_id'];
            else
                $tienda_id = $this->Interfaz->id($this->Session->read('tienda_id'));
            $d['Funcionario']['tienda_id'] = $tienda_id;
            if ($this->Funcionario->save($d)) {
                $d = null;
                $d['Usuario']['id'] = $id;
                $d['Usuario']['contrasena'] = $this->Utilitario->con_clave($clave);
                if ($this->Usuario->save($d)) {
                    $this->Vista->mensaje('Datos del Funcionario fueron Modificados Exitosamente<br />Cierre la ventana de modificacion', 'EXITO');
                    $this->Usuario->query('COMMIT');
                    $this->log();
                } else {
                    $this->Vista->mensaje('Ocurrio un Error Verificar Logs', 'ERROR');
                    $this->Usuario->query('ROLLBACK');
                }
            } else {
                $this->Vista->mensaje('Ocurrio un Error Verificar Logs', 'ERROR');
                $this->Usuario->query('ROLLBACK');
            }
        }
        $this->listado_usuarios($data['usuario']);
        $this->render('listado_usuarios');
    }

    public function mi_sistemas($div = 'vista', $divlistado = 'vista', $id = null) {
        $id_limpio = $this->Interfaz->id($id);
        $this->set('data', $this->Usuario->find('first', array('conditions' => array("Usuario.id" => $id_limpio))));
        $f = $this->Usuario_sistema->find('all', array('fields' => array('Usuario_sistema.estatus', 'Usuario_sistema.id', 'Sistema.nombre', 'Sistema.nombre_var', 'Sistema.estatus'),
            'conditions' => array('Usuario_sistema.usuario_id' => $id_limpio), 'order' => 'Sistema.nombre ASC'));
        $s = $this->Sistema->find('list', array('fields' => array('Sistema.id', 'Sistema.nombre'), 'conditions' => array('Sistema.estatus' => 1), 'order' => 'Sistema.nombre ASC'));

        $this->set('div', $div);
        $this->set('sistemas', $f);
        $this->set('lista_sistemas', $s);
        $this->set('divlistado', $divlistado);
    }

    public function cambiar_estatus_mi_sistema($diveve, $est, $id = null) {
        if (isset($id)) {
            $f = $this->Usuario_sistema->find('first', array('fields' => array('Usuario_sistema.estatus'), 'conditions' => array('Usuario_sistema.id' => $this->Interfaz->id($id))));
            if ($f['Usuario_sistema']['estatus'] == 1) {
                $est_n = 0;
                $msj = "Sistema para el Usuario Desactivado Exitosamente";
            } else {
                $est_n = 1;
                $msj = "Sistema para el Usuario Activado Exitosamente";
            }
            $d['Usuario_sistema']['id'] = $this->Interfaz->id($id);
            $d['Usuario_sistema']['estatus'] = $est_n;
            if ($this->Usuario_sistema->save($d)) {
                $this->Vista->mensaje($msj, 'EXITO');
                $this->set('esta', $est_n);
            } else {
                $this->Vista->mensaje('Ocurrio un error Intente nuevamente', 'Error');
                $this->set('esta', $est);
            }
            $this->set('id', $this->Interfaz->id($id));
            $this->log();
        } else {
            $this->set('esta', $est);
            $this->set('id', $id);
            $this->Vista->mensaje('Error estas tratando de violar la seguridad AGROPATRIA', 'ALERTA');
        }
        $this->set('diveve', $diveve);
    }

    public function guardar_nuevo_sistema() {
        extract($this->request->data);
        $id_limpio = $this->Interfaz->id($usuario_id);
        $id_limpio2 = $sistema_id;
        $f = $this->Usuario_sistema->find('all', array('fields' => array('Usuario_sistema.estatus', 'Usuario_sistema.id', 'Sistema.nombre', 'Sistema.nombre_var', 'Sistema.estatus'),
            'conditions' => array('Usuario_sistema.usuario_id' => $id_limpio), 'order' => 'Sistema.nombre ASC'));
        $this->set('sistemas', $f);
        if (isset($id_limpio2) && $id_limpio2 > 0) {
            if ($this->Vista->verifica_dos('Usuario_sistema', 'sistema_id', 'usuario_id', $id_limpio2, $id_limpio, 'sistema_id')) {
                $this->Vista->mensaje('Este Sistema ya se Encuantra asignado al Usuario', 'ERROR');
            } else {
                $d['Usuario_sistema']['sistema_id'] = $id_limpio2;
                $d['Usuario_sistema']['usuario_id'] = $id_limpio;
                if ($this->Usuario_sistema->save($d)) {
                    $this->Vista->mensaje('Sistema asignado al Usuario', 'Exito');
                } else {
                    $this->Vista->mensaje('Ocurrio un error asignando sistema', 'ERROR');
                }
                $this->log();
            }
        } else {
            $this->Vista->mensaje('Debe seleccionar un sistema', 'ERROR');
        }
    }

    public function permiso_usuario($div = 'vista', $divlistado = 'vista', $id = null) {
        $this->permisos_opcion_individual('LISTADO DE usuarios', 'estatus', 'ver'); // mensaje que se quiere mostrar
        $id_limpio = $this->Interfaz->id($id);
        $s = $this->Usuario_sistema->find('all', array('fields' => array('Sistema.id', 'Sistema.nombre'),
            'conditions' => array('Usuario_sistema.usuario_id' => $id_limpio, 'Usuario_sistema.estatus' => 1), 'order' => 'Sistema.nombre ASC'));
        for ($j = 0; $j < count($s); $j++) {
            $lis[$s[$j]['Sistema']['id']] = $s[$j]['Sistema']['nombre'];
        }
        $this->set('lista_sistemas', $lis);
        $this->set('data', $this->Usuario->find('first', array('conditions' => array("Usuario.id" => $id_limpio))));
        $f = $this->Usuario_sistema->find('all', array('fields' => array('Usuario_sistema.estatus', 'Usuario_sistema.id', 'Sistema.nombre', 'Sistema.nombre_var', 'Sistema.estatus'),
            'conditions' => array('Usuario_sistema.usuario_id' => $id_limpio), 'order' => 'Sistema.nombre ASC'));

        $this->set('div', $div);
        $this->set('sistemas', $f);
        $this->set('divlistado', $divlistado);
        $opciones = $this->Opcion_sistema->find('all', array('conditions' => array('Opcion_sistema.estatus' => 1), 'fields' => array('Opcion_sistema.id', 'Opcion_sistema.nombre'), 'order' => 'Opcion_sistema.id ASC'));

        $this->set('opciones', $opciones);
    }

    public function montar_modulos_sistema($id_sistema = null) {
        if (!isset($id_sistema)) {
            $acciones = null;
            $lista = null;
        } else {
            $acciones = $this->Sistema_modulo_sistema->find('all', array('fields' => 'Sistema_modulo_sistema.id, Modulo_sistema.nombre', 'conditions' => array('Sistema_modulo_sistema.sistema_id' => $id_sistema, 'Sistema_modulo_sistema.estatus' => 1)));
            if (count($acciones) == 0)
                $lista = null;
            else {
                for ($i = 0; $i < count($acciones); $i++)
                    $lista[$acciones[$i]['Sistema_modulo_sistema']['id']] = $acciones[$i]['Modulo_sistema']['nombre'];
            }
        }
        $this->set('lista_accion_sistema', $lista);
    }

    public function listado_permiso_usuario() {
        $this->permisos_opciones('LISTADO DE usuarios', 'estatus');
        $data = $this->request->data;
        $id_limpio = $this->Interfaz->id($data['usuario_id']);
        $opciones = $this->Opcion_sistema->find('all', array('conditions' => array('Opcion_sistema.estatus' => 1), 'fields' => array('Opcion_sistema.id', 'Opcion_sistema.nombre'), 'order' => 'Opcion_sistema.id ASC'));
        $id = $data['modulo_sistema_id'];
        $mod_acci = $this->Sistema_modulo_accion->find('all', array('conditions' => array('Sistema_modulo_accion.sistema_modulo_sistema_id' => $id, 'Sistema_modulo_accion.estatus' => 1), 'fields' => array('Sistema_modulo_accion.id', 'Accion_sistema.nombre')));
        $tam = count($mod_acci);
        if ($tam > 0) {
            for ($j = 0; $j < count($mod_acci); $j++) {
                $accion[$j] = $mod_acci[$j]['Accion_sistema']['nombre'];
                for ($k = 0; $k < count($opciones); $k++) {
                    $n = $this->Modulo_accion_opcion->find('first', array('conditions' => array('Modulo_accion_opcion.sistema_modulo_accion_id' => $mod_acci[$j]['Sistema_modulo_accion']['id'], 'opcion_sistema_id' => $opciones[$k]['Opcion_sistema']['id']), 'fields' => array('id')));
                    if (!empty($n['Modulo_accion_opcion']['id']) && $n['Modulo_accion_opcion']['id'] > 0) {
                        $r = $this->obtener_permisos_mao($n['Modulo_accion_opcion']['id'], $id_limpio);
                        $accion_opcion[$j][$k]['id'] = $n['Modulo_accion_opcion']['id'];
                    } else {
                        $r = 2;
                        $accion_opcion[$j][$k]['id'] = 0;
                    }
                    $accion_opcion[$j][$k]['permiso'] = $r;
                }
            }
        } else {
            $accion[0] = 'Nada';
            $accion_opcion[0][0] = 'Nada';
        }
        $this->set('usuario_id', $this->Interfaz->id($data['usuario_id']));
        $this->set('acciones', $accion);
        $this->set('tamanio', $tam);
        $this->set('accion_opcion', $accion_opcion);
        $this->set('opciones', $opciones);
        /*
          No es facil vivir en un mundo intranquilo y confuso es dificil creer cuando existe tanta incertidumbre es penoso esperar cuando hay tanta confucion
         */
    }

    public function cambiar_permisos_mi_sistema($usu_id, $id = null) {
        $this->permisos_opcion_individual('LISTADO DE usuarios', 'estatus', 'permiso'); // mensaje que se quiere mostrar
        if (isset($id)) {
            $id_mao = $this->Interfaz->id($id);
            $id_usu = $this->Interfaz->id($usu_id);
            if ($id_mao > 0) {
                $r = $this->obtener_permisos_mao($id_mao, $id_usu);
                if ($r == 1) {
                    $r = 0;
                    $msj = "Permiso Desactivado Exitosamente";
                } else {
                    $r = 1;
                    $msj = "Permiso Activado Exitosamente";
                }
                $f = $this->Permiso->find('first', array('fields' => array('Permiso.id'), 'conditions' => array('Permiso.modulo_accion_opcion_id' => $id_mao, 'Permiso.usuario_id' => $id_usu)));
                if (isset($f['Permiso']['id']) && $f['Permiso']['id'] > 0) {
                    $d['Permiso']['id'] = $f['Permiso']['id'];
                    $d['Permiso']['permiso'] = $r;
                    $this->set('esta', $r);
                } else {
                    $d['Permiso']['permiso'] = $r;
                    $d['Permiso']['usuario_id'] = $id_usu;
                    $d['Permiso']['modulo_accion_opcion_id'] = $id_mao;
                    $d['Permiso']['permiso'] = 1;
                    $this->set('esta', 1);
                    $msj = "Permiso Activado Exitosamente";
                }
                if ($this->Permiso->save($d)) {
                    $this->Vista->mensaje($msj, 'EXITO');
                } else {
                    $this->Vista->mensaje('Ocurrio un error Intente nuevamente', 'Error');
                }
                $this->log();
            }
            else
                $this->Vista->mensaje('no existe modulo accion opcion', 'Error');
        }
        else {
            $this->set('esta', 0);
            $this->set('id', 0);
            $this->Vista->mensaje('Error estas tratando de violar la seguridad AGROPATRIA', 'ALERTA');
        }
    }

    function pdfc($id = null) {
        $this->layout = 'pdf';
        $this->render();
    }

    function asigna_permisos($sistema_id, $modulo_id = 0, $accion_id = 0, $opcion_id = 0, $modulo_accion_opcion_id = 0) {
        $f = $this->Usuario_sistema->find('all', array('fields' => array('Usuario.id', 'Usuario.tipo_usuario_id'),
            'conditions' => array('Usuario_sistema.sistema_id' => $sistema_id), 'order' => 'Usuario.id ASC'));
        if ($modulo_accion_opcion_id == 0) {
            $id_sms = $this->Sistema_modulo_sistema->mi_id($sistema_id, $modulo); //id sistema_modulo_sistema
            $id_sma = $this->Sistema_modulo_accion->mi_id($accion_id, $id_sms); //id sistema_modulo_accion
            $id_smao = $this->Modulo_accion_opcion->mi_id($opcion_id, $id_sma); //id sistema_modulo_accion_opcion
            $modulo_accion_opcion_id = $id_smao;
        }
        $ban = 1;
        for ($i = 0; $i < count($f); $i++) {
            $this->data = NULL;
            if ($f[$i]['Usuario']['tipo_usuario_id'] == 1)
                $est = 1;
            else
                $est = 0;
            $d['Permiso']['usuario_id'] = $f[$i]['Usuario']['id'];
            $d['Permiso']['modulo_accion_opcion_id'] = $modulo_accion_opcion_id;
            $d['Permiso']['permiso'] = $est;
            if ($this->Permiso->saveAll($d)) {
                $ban = $ban * 1;
            } else {
                $ban = 0;
                break;
            }
        }

        if ($ban == 1) {
            $this->Modulo_accion_opcion->query('COMMIT');
            $this->set('Exito', ' Accion Asignada correctamente');
            echo "<script type=\"text/javascript\" language=\"javascript\">document.getElementById('opcion_id').value='';</script>";
        } else {
            $this->Modulo_accion_opcion->query('ROLLBACK');
            $this->set('Error', 'ha ocurrido un error asignando permisos intente de nuevo!!!');
        }
    }

}

//class
?>